package cn.bandeqing.product.rpc;

import cn.bandeqing.base.resp.Resp;
import cn.bandeqing.base.resp.Table;
import cn.bandeqing.finance.resp.LabelValue;
import cn.bandeqing.product.req.*;
import cn.bandeqing.product.resp.*;

import java.util.List;

public interface IProductRpc {

    Resp<Table<ProductTable>> table(ProductTableReq req);

    void saveOrUpdate(ProductSaveOrUpdateReq req);

    Resp<Table<ProductSpecificationTable>> productSpecificationTable(ProductSpecificationTableReq req);

    void productSpecificationSaveOrUpdate(ProductSpecificationSaveOrUpdateReq req);

    Resp<Table<ProductInventoryTable>> productInventoryTable(ProductInventoryTableReq req);

    void productInventorySaveOrUpdate(ProductInventorySaveOrUpdateReq req);

    Resp<List<LabelValue>> specificationSelect(ProductSpecificationReq req);

    void productChanegInventory(ProductChangeInventoryReq req);

    Resp<Table<ProductInventoryRecordTable>> inventoryRecordTable(ProductInventoryRecordTableReq req);

    Resp<List<LabelValue>> select(ProductSelectReq req);

    Resp<List<ProductListResp>> list(ProductListReq req);

    Resp<ProductDetailResp> detail(ProductDetailReq req);

    Resp<List<EvaluateDetail>> evaluateList(EvaluateListReq req);

    Resp<Void> refreshAllProductInventory();

}
